home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / sbin / update-ca-certificates < prev    next >
Text File  |  2008-06-03  |  3KB  |  103 lines

  1. #!/bin/sh -e
  2. #
  3. # update-ca-certificates
  4. #
  5. # Copyright (c) 2003 Fumitoshi UKAI <ukai@debian.or.jp>
  6. # This program is free software; you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation; either version 2 of the License, or
  9. # (at your option) any later version.
  10. #
  11. # This program is distributed in the hope that it will be useful,
  12. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. # GNU General Public License for more details.
  15. #
  16. # You should have received a copy of the GNU General Public License
  17. # along with this program; if not, write to the Free Software
  18. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19. #
  20.  
  21. verbose=0
  22. fresh=0
  23. while [ $# -gt 0 ];
  24. do
  25.   case $1 in
  26.   --verbose|-v)
  27.       verbose=1;;
  28.   --fresh|-f)
  29.     fresh=1;;
  30.   --help|-h|*)
  31.     echo "$0: [--verbose] [--fresh]"
  32.     exit;;
  33.   esac
  34.   shift
  35. done
  36.  
  37. CERTSCONF=/etc/ca-certificates.conf
  38. CERTSDIR=/usr/share/ca-certificates
  39. CERTBUNDLE=ca-certificates.crt
  40. ETCCERTSDIR=/etc/ssl/certs
  41. cd $ETCCERTSDIR
  42. if [ "$fresh" = 1 ]; then
  43.   echo -n "Clearing symlinks in $ETCCERTSDIR..."
  44.   find . -type l -print | while read symlink
  45.   do
  46.      case $(readlink $symlink) in
  47.      $CERTSDIR*) rm -f $symlink;;
  48.      esac
  49.   done
  50.   find . -type l -print | while read symlink
  51.   do
  52.      test -f $symlink || rm -f $symlink
  53.   done
  54.   echo "done."
  55. fi
  56. echo -n "Updating certificates in $ETCCERTSDIR...."
  57.  
  58. bundletmp=`mktemp "${CERTBUNDLE}.tmp.XXXXXX"`
  59. removed="$(sed -ne 's/^!//p' $CERTSCONF | while read crt
  60. do
  61.  if test "$crt" = ""; then continue; fi
  62.  pem=$(basename "$crt" .crt).pem
  63.  if test -e "$pem"; then
  64.   rm -f "$pem"
  65.   echo "-$ETCCERTSDIR/$pem"
  66.  fi
  67. done)"
  68.  
  69. added="$(sed -e '/^#/d' -e '/^!/d' $CERTSCONF | while read crt
  70. do
  71.  if test "$crt" = ""; then continue; fi
  72.  if ! test -f "$CERTSDIR/$crt"; then continue; fi
  73.  pem=$(basename "$crt" .crt).pem
  74.  if ! test -e "$pem"; then echo "+$ETCCERTSDIR/$pem"; fi
  75.  ln -sf "$CERTSDIR/$crt" "$pem"
  76.  cat "$CERTSDIR/$crt" >> "$bundletmp"
  77. done)"
  78. chmod 0644 "$bundletmp"
  79. mv -f "$bundletmp" "$CERTBUNDLE"
  80.  
  81. if [ -n "$added" ] || [ -n "$removed" ]; then
  82.   # only run if set of files has changed
  83.  
  84.   if [ "$verbose" = 0 ]; then
  85.     c_rehash . > /dev/null 2>&1
  86.   else
  87.     c_rehash .
  88.   fi
  89.   echo "done."
  90.  
  91.   HOOKSDIR=/etc/ca-certificates/update.d
  92.   echo -n "Running hooks in $HOOKSDIR...."
  93.   VERBOSE_ARG=
  94.   [ "$verbose" = 0 ] || VERBOSE_ARG=--verbose
  95.   eval run-parts $VERB_ARG --test -- $HOOKSDIR | while read hook; do
  96.   printf -- "${removed:+$removed\n}${added:+$added\n}" | eval $hook
  97.   done
  98.   echo "done."
  99. else
  100.   echo "done."
  101. fi
  102.